home *** CD-ROM | disk | FTP | other *** search
/ Belgian Amiga Club - ADF Collection / BS1 part 05.zip / BS1 part 5 / GOD14-(412)695-3647.adf / FindEmAllV5.2.Doc.pp / FindEmAllV5.2.Doc
Text File  |  1992-08-04  |  51KB  |  1,023 lines

  1.  
  2.                          FindEmAll V5.2
  3.  
  4.               Copyright © 1991-1992 Koen Peetermans
  5.                        All rights reserved
  6.  
  7.                   Release date May 18, 1992
  8.  
  9.                    FREEWARE/VOLUNTARY SHAREWARE
  10.  
  11.                           User Manual
  12.    
  13. TABLE OF CONTENTS
  14. -----------------
  15. A) DISCLAIMER
  16. B) PREFACE
  17. C) HOW TO GET A NEW VERSION
  18. D) ERIK LØVENDHAL'S ANTI-VIRUS WORK
  19. E) SYSTEM REQUIRMENTS
  20. F) WHY DID I WRITE THIS PROGRAM ???
  21. G) WHAT DOES THIS PROGRAM DO ??
  22. H) PACKAGE LIST
  23. I) QUICK START/EXPERIMENTING
  24. J) THE DISPLAY USED IN THE FINDEMALL PROGRAMS
  25.     1) Special "User-friendly" ANALYSE display in CLI
  26.     2) Example Display of a CLEAN computer with kickstart 1.2/1.3
  27. K) TECHNICAL STUFF
  28.     1) ColdCpt,CoolCpt,WarmCpt
  29.     2) KickMem
  30.     3) KickTag
  31.     4) Debug
  32.     5) Execint
  33.     6) SftList
  34.     7) ErrVec
  35.     8) HardInt
  36.     9) TrapVec
  37.        10) TaskVec
  38.        11) DosBase
  39.        12) KBReset
  40.        13) INTERRUPT SERVERS
  41.                -What are interrupt servers ?
  42.                -Examples
  43.        14) LIBRARIES/DEVICES/RESOURCES
  44.                -What are libraries/devices/resources ?
  45.         -Examples                   
  46.         -THE INTERNAL DOS LIBRARY
  47.        15) TASKS
  48.                -Normal Display
  49.                -Example : diskdoctors virus
  50.                -Harddisk problems
  51.                -Tips & Tricks
  52.        16) RESIDENTS
  53.                -What are resident programs ?
  54.                -Multiple viruses example
  55.        17) Message Ports
  56.  
  57. L) THE FINDEMALLVECTORS PROGRAM
  58. M) MORE TECHNICAL STUFF
  59.     1) The Printname routine.
  60.     2) The Cold Reset routine.
  61. L) "SHORT" FINDEMALL HISTORY
  62. M) CLI CHECKING VERSUS BOOTBLOCKCHECKING / CLI MEMCHECK INSTALLATION
  63. N) FUTURE UPGRADE PLANS + HELP NEEDED.
  64. O) THE AUTHOR - ME !
  65. P) THANKS
  66. Q) QUESTIONS ??
  67. R) BUGS ??
  68. S) SOURCE CODE
  69.  
  70.                
  71. DISCLAIMER
  72.  
  73.   FindEmAll has been tested thoroughly and is not able to damage
  74. your system in any way. However, the author is not responsible
  75. for any loss of data caused by bad use of the program. See 
  76. especially in the section that explains the use of the installer.
  77.  
  78. PREFACE
  79.  
  80.   This program is freeware, this means that you can copy it
  81. freely as long as you don't ask any more money for it than a
  82. nominal fee for copying.  If you want to distribute this program
  83. you should keep this document with it.  This program cannot be
  84. used for commercial purposes without written permission from the
  85. author. I hereby give explicit permission to Erik Løvendahl Sørensen
  86. and Fred Fish to include this program in their series.
  87.  
  88. HOW TO GET A NEW VERSION
  89.  
  90.   New versions are available from me directly, just send enough
  91. money for stamps,disk,... Although this program is freeware, more
  92. money than needed won't be refused, the money will be used in the
  93. battle against Viruses and Virus-authors. If you send me more than
  94. $15, you can also get the source of the previous version and you can
  95. get the next 2 versions directly from me (Fast !).
  96.  
  97.   Or you could write to Erik Løvendahl Sørensen (see below), he 
  98. will always get new versions from me directly, and hopefully
  99. he'll place it on his splendid "New SuperKillers" disks.
  100.  
  101.   If you have suggestions or remarks about this program, or if
  102. you find any bugs, please contact me. I like to have mail about this program
  103. and other Virus subjects. New Viruses would also be appreciated.
  104.  
  105. Write to the following address:
  106.  
  107.         Koen Peetermans
  108.         Vrijheersstraat 8
  109.         B-3891 Gingelom
  110.         Belgium (Europe)
  111.     
  112.  
  113. Erik Løvendhal's Anti-virus work
  114. --------------------------------
  115.  
  116.   Our motto: "Safe Hex..."
  117.  
  118.   I want to mention the work of Erik Løvendhal Sørensen from Denmark.
  119. He has founded a group of Amiga Enthusiast, all fighting against viruses.
  120.  
  121.   This group has over 250 international members now, among them
  122. some of the programmers of wellknown anti-virus programs like
  123. Steve Tibbet and Jonathan Potter.  Among the activities of this
  124. group are:
  125.  
  126. - Spreading information to anti-virus programmers as fast as
  127.   possible.
  128. - Trying to get names and proof against virus programmers and
  129.   giving the information to the justice departement of his/her
  130.   country to press charges. Remember, there is a reward of 
  131.   1000$ (Wow !) for the person that helps convicting a Virus
  132.   programmer.
  133. - Writing articles in popular magazines to inform new Amiga
  134.   users about viruses and how to protect themselves.
  135.  
  136.   All this is volunteer work. If you want some more information
  137. about this organization or you want to sponsor his work, contact
  138. Erik at the following address:
  139.  
  140.         Erik Løvendahl Sørensen
  141.         Snaphanevej 10
  142.         4720 Præstø
  143.         Denmark - Europe
  144.  
  145.         Phone: 00 45 55 99 25 12
  146.         Fidonet 2:23424/43
  147.  
  148.   Persons in Belgium can contact me directly, I'm also responsible for the
  149.   Regional Virus Centre in Belgium (Dutch language).
  150.   
  151. SYSTEM REQUIREMENTS
  152.  
  153.   FindEmAll should run on ALL amiga's, who have their kickstart logically
  154. at $f80000 or $fc0000. People with kickstart e.g. at $2000000 or so can get
  155. an adjusted version from me if they send me a description of their kickstart
  156. address. Future versions of FindEmAll will probably be able to bypass this
  157. problem by using a special installer. (comments are welcome !)
  158.   If you're an experienced Amiga freak, you can "patch" the code if you want,
  159. just change the values $efffff and $1000001 inside the programs to the right
  160. kickstart addresses.
  161.  
  162.   It has been tested with KickStart 1.2,1.3 and 2.0 on A500/2000/3000
  163. Amiga models (Not on an Amiga 1000,but these won't cause a problem I guess.)
  164.  
  165.   It has a NTSC/PAL detection for automatic sizing of the display.
  166.  
  167.   Should you have any trouble running FindEmAll on your machine,
  168. please write to me with the full specifications of your machine,
  169. that is KickStart version, model, expansion boards etc...
  170. Use a good sysinfo program to determine your setup, if needed.
  171. A printout of the output of the "FindEmAllVectors" program (see further)
  172. would also help me solving your problem.
  173.  
  174. WHY DID I WRITE THIS PROGRAM ??
  175.  
  176.    Some time ago I noticed that a new virus, the Saddam Virus,
  177. had infiltrated about 10 disks of me, even though I already knew quite
  178. a lot about viruses. At the moment there existed no viruskiller for this 
  179. virus so I had quite a few problems deleting it. At that moment I said
  180. that I should have a program that should be able to immediatly detect ALL 
  181. new viruses, no matter how devious their tricks or "INVISIBLE" modes would
  182. be. The FindEmAll programs work a bit like the Ram-check option of
  183. the new BOOTX versions, and at the moment it does also some other things.
  184.  
  185.    The main difference is that I managed to make my program so short that
  186. I was able to place it in a bootblock (1Kb !), what is very difficult if
  187. you see the abilities of this program. Since it is a bootblock you are able
  188. to detect future viruses very fast in memory, and a lot of disks which
  189. don't use things like loaders can be installed with this bootblock.
  190.  
  191.    Don't under-estimate the work that has gone into these programs. I've
  192. been working on it the last months and it has changed a LOT since the
  193. first version (See the History). A lot of research was needed in order
  194. to understand all the things that are and COULD be used by viruses.
  195.  
  196. WHAT DOES THIS PROGRAM DO ????
  197.  
  198.    This program checks a LOT of things in memory, some are very important,
  199. where some are less important and some are maybe not even needed, but you
  200. can never have enough information when dealing with viruses.
  201.  
  202.    Here is a short summary of the things it does (Detailed information
  203. can be found further in this manual) :
  204.  
  205.    - It checks + shows ALL the main vectors used by viruses (cold,Cool,...)
  206.    - It checks + shows some "important" values in Execbase
  207.    - It checks ALL sorts of interrupts, from Hardware interrupts, to
  208.      Execbase Interrupts (handlers AND SERVERS !), the serverlist is
  209.      even displayed on-screen !!!
  210.    - It shows + COMPLETELY checks ALL libraries and Devices, and ALL
  211.      the Resources that can be checked.
  212.    - It shows ALL names of reset-proof resident modules (Very useful !)
  213.    - It shows all the tasks running.
  214.    - The CLI programs also check the Internal Doslibrary and 2 important
  215.      vectors in DosBase, this is VERY EXTRAORDINARY AND RARE !!!
  216.    - It can wipe out ANY virus from MEMORY !!! by doing a reset !.
  217.    - .......
  218.  
  219.     As you can or can't see, this program is the MOST powerful
  220.     Virus-DETECTOR available for the Amiga at the moment, certainly
  221.     when compared with other BOOTBLOCK checkers, I've never seen
  222.     one even coming close !! (STOP bragging, Koen !!). Most other
  223.     bootblock checkers only check about 3 values in memory, my
  224.     programs check even more than 500 values in memory !!!!!.
  225.  
  226. PACKAGE:
  227.    The package should contain (Names can be changed a BIT,if needed):
  228.       - This doc file "FindEmAll.doc"
  229.       - The Bootblock installer "FindEmAllInstaller"
  230.       - The CLI program "FindEmAllCLI" (V5.2)
  231.       - A Program called "FindEmAllvectors "(V1.6) (runs only from CLI)
  232.  
  233. QUICK START/EXPERIMENTING
  234.   Run the installer (from CLI or WorkBench), insert a Disk with a normal
  235. bootblock (so not with a loader !), and press the Install gadget. The Boot-
  236. block will now be installed on that disk. Press a key during the execution
  237. of that boot to display the current status (so,hold down shift or something
  238. else during bootup and the display will always pop up).
  239.   If there is something wierd, like a virus, is in memory, the display will
  240. come up autimatically, even withouth a key-press.
  241.   During the display, press Left-MouseButton to wipe everything out of
  242. memory, and the Right one to perform a normal boot and leave everything in
  243. memory. Sorry for so few mousebutton information on the display, I had no
  244. place left, I thought security was more important than user-friendlyness and 
  245. after a few times using the programs you'll work with it with your eyes
  246. closed !!!.
  247.  
  248. THE BOOTBLOCK INSTALLER
  249.    The installer is pretty straight-forward and user-friendly, if I may
  250. say it. just run it from CLI command or from workbench, and a window will
  251. pop up. Just select the appropriate "gadgets" to do a install with my
  252. bootblock, display the current bootblock on that disk, and select another
  253. drive. The only gadget that could confuse you is the 'TaskCheck' gadget.
  254. This is a switch that allows you to put task checking on and off. After
  255. you've selected that you'll still have to install the disk with the chosen
  256. bootblock. Why is this selection possible ??? Well see further in the doc's
  257. in the part on TASKS !!. For now, leave the taskcheck on, it's safer !!!
  258. Important: Be sure NOT to overwrite loaders or special intro's !!!
  259. You can also install an other version that doesn't display a message, but
  260. that checks more things, the names of these bootblocks have an "/X" or
  261. something like that behind the name. 
  262.  
  263. THE DISPLAY USED IN THE FINDEMALL PROGRAM/BOOTBLOCK.
  264.  
  265.   After the Boot, the screen will become BLACK to enable you to notice the
  266. presence of the FindEmAll bootblock on that disk (Black is beautiful !)
  267.  
  268.   I use an Alert Window to display the status/.... The programming of
  269. such a window doesn't need a lot of programming so I had more space for
  270. detection routines. The Alert Window also assured me maximum Kickstart
  271. compatibility.
  272.  
  273. SPECIAL "USER-FRIENDLY" ANALYSE DISPLAY IN CLI
  274.  
  275.   The "OLD" FindEmALL versions were not very userfriendly, so I did an
  276. effort to make at least the CLI checker a bit more userfriendly. When there
  277. is something wierd in memory, a special alert window will pop up, saying
  278. that there is a suspicious program found in memory, and that this COULD
  279. be a virus. If nothing is found in memory, this window will NEVER pop up !
  280. In the Middle of the screen you see an ANALYSE window that quickly shows
  281. the most frequently performed actions of some viruses, and if they are
  282. done at the moment. If there are some Yes-es in this display, you should
  283. be EXTREMELY cautious !!. If you want more information (see further), you
  284. can press the left mouse button. I am planning to keep this ANALYSE window
  285. updated so that with ANY resident VIRUS, there is at least one YES in the
  286. analyse window. IF there is no YES in the display, normally there is NO
  287. OLD virus in memory, but beware for NEW viruses, but these are normally
  288. found and displayed in a more technical way in the "Technical display".
  289.  
  290. Here's a short explanation of the ANALYSED functions :
  291. - Reset proof program found in memory : There is a program in memory that
  292.                     can survive a RESET !!!
  293. - Drive I/O intercepted :         Bootblock/... read/writes intercepted
  294.                         by a program (VERY LIKELY a VIRUS !!).
  295. - Hard/Software interrupts changed :    Used a lot by viruses, but sometimes
  296.                         also by "badly" written utilities.  
  297. - Reset Proof memory allocated :    The least important function of this
  298.                     ANALYSE display, this is sometimes
  299.                     used by viruses, or a RAMDISK                        
  300. - DOSBase changed (traveling Jack) :    99 % sure that this is a VIRUS !!!
  301. - DosLib LOAD offset intercepted :    Could be a LINK-virus, or maybe also
  302.                     explode.library,LVD,pp.library
  303. - DosLib WRITE offset intercepted :    Could be a LINK-virus, or also
  304.                     patchpp,....
  305.                     
  306. EXAMPLE DISPLAY OF A CLEAN COMPUTER ON A KICKSTART 1.2/1.3 AMIGA
  307.  
  308. ************************************************************************
  309. *  LEFT=KILL/RESET        K.P. FindEmAll V5.2                          *
  310. *                                                                      *
  311. * ColdCpt OK   -ciaa.resource           OK  -potgo.resource        OK  *
  312. * CoolCpt OK   -??????                  OK  -keymap.resource       OK  *
  313. * WarmCpt OK   -gameport.device         OK  -ciaa.resource         OK  *
  314. * KickMem OK   -timer.device            OK  -ciab.resource         OK  *
  315. * KickTag OK   -ciab.resource           OK  -disk.resource         OK  *
  316. *{Debug   OK} {-Internal DOS library    OK} -misc.resource         OK  *
  317. * ExecInt OK   -exec.library            OK                             *
  318. *{SftList OK}  -expansion.library       OK  -keyboard.device       OK  *
  319. *{ErrVec  OK}  -graphics.library        OK  -gameport.device       OK  *
  320. * HardInt OK   -layers.library          OK  -timer.device          OK  *
  321. *{TrapVec OK}  -intuition.library       OK  -audio.device          OK  *
  322. *{TaskVec OK}  -mathffp.library         OK  -input.device          OK  *
  323. *{DosBase OK} {.............}               -console.device        OK  *
  324. *{KBReset OK}  -exec.library            OK  -trackdisk.device      OK  *
  325. *                                                                      *
  326. *              -input.device            OK                             *
  327. *              -trackdisk.device        OK                             *
  328. *                                                                      *
  329. *                                                                      *
  330. *                                                                      *
  331. *                                                                      *
  332. *                                                                      *
  333. *                                                                      *
  334. *                                                                      *
  335. * Resident: OK                                                         *
  336. ************************************************************************
  337.  
  338.    Note that the field places of the left column are different in BOOT,
  339.    and there are also some fields not displayed in boot.
  340.  
  341.    In CLI: 'K.P. FindEmAll v5.2',DOSBase+dos.library+internal DOS library
  342.    + some extra libraries/ports displayed ( see {}) + KBReset checked
  343.    + servers displayed below the devices !!!
  344.  
  345. TECHNICAL STUFF
  346.    Hmmm..... for a non-programmer or a non-virus specialist there should
  347. be at least a few problems understanding all this, that's why I'll try
  348. to explain all of them ....... I won't get TOO deep into some parts,since
  349. I would give would-be virus programmers too many tips and that's absolutely
  350. not what I want to do.
  351.  
  352.    It's rather technical, but READ it, it's quite important if you want
  353. to understand and use this bootblock to the limit. I kept the information
  354. as simple as I could possibly write it !!!
  355.    
  356.    I have divided the displayed vectors/... into three classes :
  357. - Class A : Very important, very often used by viruses. These Vectors
  358.             HAVE to be used to create reset-proof software.
  359. - Class B : important, often/frequent used by viruses for hooking
  360.             into memory,hiding in memory,...
  361. - Class C : Vectors that aren't really critical or normally couldn't
  362.             be used by a Virus.
  363.   
  364.  
  365.    ColdCpt,CoolCpt,WarmCpt (Class A)
  366.    -----------------------
  367. - These are vectors that are very often used by viruses since they enable
  368. a program to be reset-proof. The three vectors' full names are
  369. ColdCapture,CoolCapture and WarmCapture. They are found in the Execbase
  370. structure (The 'Main' system structure). These values are checked for
  371. being zero, if they're NOT than there is almost certain a reset-resident
  372. program (A Virus ?) in memory. The ColdCapture and the CoolCapture vectors
  373. are much more important than the WarmCpt vectors, since that vector is
  374. apparantly not possible to use for creating reset-resident programs with
  375. the current kickstarts. 
  376.   These vectors are considerd Very important Vectors, if there is anything
  377. wrong with these the chances are great that there is a virus in memory (or
  378. another reset-proof program.) => Class 'A' Vectors
  379.   When a Vector is not zero, the "OK" is changed into a "BAD!"
  380.  
  381.    Kickmem (Class B)
  382.    -------
  383. - This is a vector that allows programmers to keep a certain part of memory
  384. reserved AFTER a reset, so that part of memory can be "protected" to be
  385. overwritten after a reset. When this Vector isn't zero, this vector will
  386. be displayed 'BAD!'. This vector is not as important as the previous vectors,
  387. but is sometimes used by some viruses. So, CAUTION when this vectors is 
  388. 'BAD!'. If ONLY this vector is BAD!, there is little chance that there is
  389. a reset-proof PROGRAM in memory, since it is not possible to START some
  390. sort of routine or program by using this vector, maybe it could be some sort
  391. of reset-proof ramdisk that keeps its memory allocated after a reset.
  392.  
  393.    KickTag (Class AA)
  394.    -------
  395. - Now this IS a very important one !!!. This one is used to be able to even
  396. create MULTIPLE reset-resident programs (See the Resident explanation).
  397. Because of the way FindEmAll searches for residents I thought it would be safer
  398. to ALSO display/check this vector seperatly, since this is one of the most
  399. important vectors.
  400.  
  401.    Debug (Class CC)
  402.    -----
  403. - This appears to be an entrypoint for the Amiga Debugger, I haven't been
  404. able to call it until now, so I guess it's not important, but it's checked
  405. anyway, to see if this one points to ROM.
  406.  
  407.    ExecInt (Class BA)
  408.    -------
  409. - This field stands for the status of 16 Interrupt vectors (Interrupts are
  410. RUN when some special thing happens, like the refresh of a screen,I/O).
  411. When one of the 16 Vectors checked doesn't point to ROM or isn't Zero,
  412. there could be a program (likely a VIRUS) in memory that has deviated it
  413. for it's own use, like for calling a routine that keeps filling Class A
  414. Vectors with the viruses' entrypoints. This is wat e.g. the ByteBandit
  415. Virus does. These 16 IntVects are found in Execbase and are used by the
  416. operating system. They define the entrypoint of a single routine (a 
  417. so-called 'interrupt-handler'), or the entrypoint of a routine that handles
  418. an 'interrupt-server-list' - see further for explanation on servers
  419.  
  420.    SftList (Class C)
  421.    -------
  422. - This also stands for some sort of interrupt, but one that isn't controlled
  423. by hardware, like the other interrupts, but by software ONLY. I just check
  424. if there is something in the 5 softlists, and if there IS something in the
  425. list it's "BAD!". These Vectors are NOT important, but were just included
  426. because I had a few bytes to spare.
  427.  
  428.    ErrVec (Class CB)
  429.    ------
  430. - These are some values that define the entrypoints of the processor when
  431. for example there is an address-error, like when you have a GURU or 
  432. something else. Sometimes changed by a Virus, don't ask me why but 
  433. it seems rather unimportant.
  434.  
  435.    HardInt (Class BA)
  436.    -------
  437. - This stands for 7 vectors, that are DIRECTLY accessed by the processor
  438. when a hardware interrupt occurs. Normally these point to a ROM-routine
  439. that executes a handler/server (see ExecInt), so if some devious virus
  440. changes this , it's 'BAD!'. These vectors can be used by a virus just
  441. like the ExecInts.
  442.  
  443.    TrapVec (Class C)
  444.    -------
  445. - This is comparable with the ErrVec Vectors, so not really important,
  446.   and I've not yet seen a Virus using it.
  447.  
  448.    TaskVec (Class C)
  449.    -------
  450. - 3 Vectors in Execbase that define the Entrypoints for taskExit(s),
  451.   exception routines,...... I've not been able to use them, so probably
  452.   a virus won't be able also.
  453.  
  454.    DOSBase (Class BA)
  455.    -------
  456. - These 2 vectors can and are only checked in CLI/Workbench because there
  457.   is no dos.library during boot. If one of these is changed, you can be
  458.   quite sure that there is some sort of (link)virus in memory. 
  459.   I've heard that the travelling Jack uses one of these two. 
  460.  
  461.    KBReset (Class ????? A ??? B ???)
  462.    -------
  463. - I don't think this one should be checked at the moment (with the current
  464.   kickstarts), but since VMK checks it I'll check it also. I'll have to say
  465.   that the routine I use is based heavily on the VMK routine, since I have
  466.   no documents that explain this sort of pointers. I also noticed that the
  467.   VMK program isn't able to check it on 68030 boards since some values in
  468.   the keyboard device are a bit changed then. ($21->$22,$24->$25) FindEmAll
  469.   also checks these values. I don't think that it is possible to create 
  470.   reset-proof programs with these vectors, but when it's possible the program
  471.   will find it.
  472.       
  473. Until now, I must say that these Vectors are not the real power of this
  474. program, since this was rather easy to make and doesn't take much routine-
  475. space/programming. The following things, however, were not THAT easy !!
  476.  
  477.    Interrupt Servers (Class BA)
  478.    -----------------
  479.  
  480. In the upper-mid part of the window you'll normally see this:
  481.  
  482.    -ciaa.resource    OK          Class B
  483.    -??????           OK          Class BA
  484.    -gameport.device  OK          Class BA
  485.    -timer.device     OK          Class BA
  486.    -ciab.resource    OK          Class B
  487.  
  488.   "Now what the hell is this ??" I hear the whole Amiga World asking......
  489.   Well remember when I told you about interrupt-servers ????. Well, that's
  490.   it !!!! These servers are used when a programmer needs to install an
  491.   interrupt 'by the book'. All interrupts are placed in a "list", and they
  492.   are one by one executed after each other when an interrupt occurs. Some
  493.   sort of interrupts are used so much at 'the same time' that these sort
  494.   of lists were 'invented'. Notice that there is more than one type of
  495.   server. You normally have the servers caused by a CIA-A interrupt
  496.   (ciaa.resource), caused by the Vertical Blank interrupt (started when
  497.   the electron beam returns to the top of the screen) (-??????,gameport.
  498.   device,timer.device) and a CIA-B interrupt (ciab.resource). 
  499.  
  500.   So, in this situation we have 3 different sort of servers displayed
  501.   (and they are okay !). The names you see appear to be the names of
  502.   the 'routines' that USE the server. Don't worry about that -??????
  503.   name, that NAME is ALWAYS bad, but that ROUTINE IS also executed so it's
  504.   also checked for the right jumpaddress. Notice that you don't see if a
  505.   server is a CIA or a VBlank server, that's not really important.
  506.  
  507.   Don't worry if there is a 'other' server displayed like '_SCSI_' (A3000),
  508.   as long as it's 'OK' there can be nothing wrong !!!. Also, with a LOT of
  509.   harddisks you have will probably also a few BAD servers, it's impossible
  510.   for me to know the difference between these and a virus-server. So you
  511.   should know your 'usual' BAD servers so you can see a DIFFERENCE when there
  512.   is something else in memory. If you look at the example display, you see
  513.   the STANDARD servers, if one of these is changed, you can be quite sure
  514.   that that change is NOT done by a harddisk !!. If you put the taskchecks
  515.   off (with the installer), the servers will be still SHOWN, but the warning
  516.   window WON'T pop up if there are ONLY tasks or SERVERS changed. 
  517.  
  518.   The servers weren't use by viruses in the 'old days', I think the Saddam
  519.   Virus was one of the first to do it.... quite Devious !!!!!!!! That one
  520.   changes the one with the BAD name, but my bootblock will say :
  521.  
  522.    -ciaa.resource    OK
  523.    -??????           BAD!       
  524.    -gameport.device  OK
  525.    -timer.device     OK
  526.    -ciab.resource    OK
  527.  
  528.   Gotcha !!!.... another virus bites the dust !!!!!! (Well, the Saddam
  529.   Virus changes SO much that is was found anyway, but you never know,
  530.   future viruses will try to hide in memory, and now they have an important
  531.   place less to hide. ('There ain't much bytes safe for a Virus when there
  532.   is a FindEmAll bootblock on your disks !!')
  533.  
  534.   A special feature of this bootblock is that it is able to distinguish
  535.   between a server and a handler, so if someone can change a handler into
  536.   a server (this is normally not possible, but since I've been able to do
  537.   it,....) this program will automatically detect if it's a server and it
  538.   will display and check that 'Undocumented Server'. Another Virus Bites
  539.   the dust !!! (And it ain't over yet !!)
  540.   
  541.   Please note that some programs like Xoper,ARTM will add new servers to
  542.   the system. Usually these servers have a good name like 'Xop I/O counter'
  543.   , but some programs like 'blanker' don't use good names,so beware !!
  544.   Viruses don't normally set a good name, but I guess they could do that in
  545.   the future, so watch out !!!.
  546.  
  547.    Libraries/Devices/Resources (Class BA / BA / B)
  548.    ---------------------------  
  549.    This works a bit like the RamCheck option of the new BootX versions,
  550.    only that my one is a bit less documentated but therefore small enough
  551.    to fit in the boot.
  552.  
  553.    On the screen during the FindEmAll Boot you can see the names of ALL
  554.    the libraries/devices/resources that are present in memory during 
  555.    the Boot (There is NO dos.library during the boot !). Now what are
  556.    Libraries/Devices/Resources ???? Well, to make a long story short,
  557.    each Lib/Dev/Res is a collection of routines that are put together
  558.    in a special structure in order to make it easier for programmers to
  559.    make programs and to insure future compatibility when e.g. a new
  560.    kickstart is published. A specific routine from one library is run
  561.    by calling a certain negative offset of that library. 
  562.    Now, my bootblock doesn't only checks the offsets OFTEN used by viruses,
  563.    but checks ALL offsets of a library so that even a Virus that changes
  564.    ANY offset in ANY L/D/R will be found.
  565.    Because of the special list-following-routine of my program, NEW 
  566.    libraries like on the A3000 are checked also.
  567.    L/D/R that run COMPLETELY in RAM instead of ROM can't be checked but
  568.    normally also can't be used by a virus since they must be loaded from
  569.    disk. In this case there won't be an 'OK' after the L/D/R name.
  570.    The Bootblock displays the offsets that are BAD in hexadecimal values.
  571.  
  572.    Examples of bad libraries/devices:
  573.    
  574.    -exec.library
  575.          -$01C8:BAD!          * The DoIO() routine is changed (used
  576.                                 by a LOT of viruses !!!)
  577.    -trackdisk.device
  578.          -$001E:BAD!          * Can be compared with the DoIO() routine,
  579.                                 but this one only applies for disk-drives,
  580.                                 while the ExecLib-DOIO works for most
  581.                                 drives/HD's !!!
  582.  
  583.  
  584.    Here's a list of offsets used often by viruses:
  585.    - exec.library :                          -trackdisk.device : 
  586.       -$0060   : FindResident routine           -$0006 : Open Device
  587.       -$00D8   : Availmem routine               -$000C : Close Device
  588.       -$0114   : FindName routine               -$001E : BeginIO routine
  589.       -$0198   : OldOpenLibrary routine      -XXXXXXX.device   :
  590.       -$01C8   : DoIO routine                   Almost Every device has the
  591.    - intuition.library :                        same offsets !!! => same as
  592.       -$00CC   : OpenWindow                     trackdisk.device !!
  593.    
  594.    I advice you to experiment a bit with the bootblock and some resident
  595.    utilities like Pseudo-ops Viruskiller (don't USE it !!) to see how
  596.    changed L/D/R are chown. Try some viruses if you have any !! (But KILL
  597.    them AFTER testing !!!)   
  598.  
  599.     THE INTERNAL DOS LIBRARY
  600.     ------------------------
  601.    This library only can be checked in CLI/Workbench, since there is no
  602.    dos.library during boot. I've made a routine that should be able to
  603.    check ALL the vectors in the internal doslibrary. I've made this
  604.    routine 'intelligent', so if there is no internal doslibrary with
  605.    kickstart 2.0, it will find that out automatically. If there's something
  606.    bad in the internal doslibrary, the vectors that are printed are NOT the
  607.    offsets in the internal doslibrary, but the offset-numbers  are just the
  608.    same as the vectors in the normal dos.library. This makes life just a bit
  609.    easier for some guys I guess. (And also made my code SHORTER !!!)   
  610.    Please allow me to mention that this check is very special, it's the
  611.    first program on Amiga that checks all the vectors in the Internal
  612.    DOS-library and IT WORKS (It detects the change done by the LZ-virus!)
  613.  
  614.       Tasks (Class B)
  615.       -----
  616. - Since the Amiga is a multitasking system, some virus-creators thought it
  617. would be "usefull" to start a task in the background that keeps the Virus
  618. firmly hooked into memory. So I had to show all the Tasks that are running
  619. during the boot. YES, there IS multitasking running during the boot, there
  620. are normally about 3 tasks running (This can be more if you own a harddisk,..)
  621. With my standard Amiga these tasks are called:
  622.  
  623.       -exec.library     (The current running tasks, controlled by exec)
  624.  
  625.       -input.device     (So a task started or controlled by the input.device)
  626.       -trackdisk.device (Same here, used to control the disk drive)
  627.  
  628.    The tasks are displayed below the libraries. Now, when a virus like
  629. the diskdoc virus gets into memory, it will install a task named
  630. "clipboard.device", that keeps putting the virus back into memory when
  631. you try to kill it. FindEmAll V5.2 will find and show this task as a BAD
  632. one. This is what shown at that moment:
  633.  
  634.       -exec.library        OK
  635.       -clipboard.device    BAD!
  636.  
  637.       -input.device        OK
  638.       -trackdisk.device    OK
  639.  
  640.    So FindEmAll is able to find BAD tasks ???. I hear a lot of programmers
  641. wondering how I do this. Well, first I have to say that this only works
  642. during the boot, and the check-"routine" is not ideal by far. You will notice
  643. this when you have a harddisk, most of the time the harddisk task is 'BAD!'
  644. also. That is why there is an option with the installer (see previous) to put
  645. this routine off, when it's annoying you when you have a harddisk. I would
  646. advice to leave the task-check on, since it offers a slightly better
  647. protection. DON'T be to sure that everything is allright when all TASKS are
  648. 'OK', since it is possible to bypass the routine (I'm not telling HOW to do
  649. that, search it for yourself you Virus Creating LAMER !!!).
  650.  
  651.    A tip on task-checking :
  652.       -If there are MORE tasks displayed than normally on your system,
  653.    you should be extremely CAREFULL. Things I've seen are 2 trackdisk tasks
  654.    during BOOT,..... So, if you have problems and you think it is a virus,
  655.    try pressing a key during the boot when normally no warning is chown 
  656.    by the bootblock.
  657.    If you see new tasks or so, BINGO !!!. So far all this is not needed,
  658.    but Viruses -unfortunately- get better and better by the time.
  659.  
  660.    For the experts : all RUNNING,READY and WAITING tasks are chown !!!
  661.    (NORMALLY there aren't any ready-tasks during boot, but the diskdoc
  662.     virus has another opinion about that !!).
  663.  
  664.    Another program I found that installed a task was the viruskiller
  665.    "Viruscontrol V1.3" (This time it was a WAITING task !). 
  666.  
  667.  
  668.    Residents (Class AA)
  669.    ---------
  670.    - At the bottom of the screen the "resident" programs are chown. These
  671. are generated by using the kicktag, explained previously. The Residents
  672. allow it to have MORE THAN ONE reset-proof program in memory at the same
  673. time !!!. Now this can be very dangerous, since viruses can intrude in
  674. memory even if there is a checker like Guardian also in memory, and Guardian
  675. won't notice the other Virus !!!!. So I made a routine that displays the names
  676. of ALL resident programs present in memory. When there is NO resident program
  677. in memory the display reads 'Resident:OK'.
  678.    When there is a resident program in memory the name is displayed,
  679. if possible (read the comment about the printname routine, further in the
  680. manual). I've been able to put about 5 resident programs in memory at the
  681. same time. These were : TurboPrint,Guardian,PowerUtility,The Lamer
  682. Exterminator Virus and a other virus with a bad resident name. So the display
  683. looked somewhat like this:
  684.  
  685. Resident:-printer.device             (Turboprint)
  686.          -PowerUtility !!!
  687.          -???????                    (Virus With BAD name)
  688.          -strap                      (Guardian)
  689.          -The Lamer Exterminator !!! (Guess what ....) 
  690.  
  691. (This is just an example, the actual places were different)
  692.  
  693. The resident program with the highest priority is chown at the lowest place,
  694. due to the text-build-up of my routine. The program with the highest priority
  695. is executed first during the reset-routine.
  696.  
  697.    Message Ports (Class CC)
  698.    -------------
  699.    - Very unimportant, I think I'm gonna remove this check !
  700.    The Ports are displayed below the devices (if there ARE ports).
  701.    Don't worry if you get ports with the -?????? name that just are ports
  702.    that aren't used anymore (although I'm really not sure about that).
  703.    In CLI,there usually ARE ports like 'IDCMP','-??????' !!!
  704.  
  705. THE FINDEMALLVECTORS PROGRAM
  706.    This is a program that can only be run from CLI (or with iconx). This
  707. program shows all the things checked by the other FindEmAll programs in
  708. hexadecimal values. This is normally used by people that know a bit more
  709. about viruses and things. I use this program to determine the address of
  710. a possible virus in memory, to do specific tests,.... There is a lot of
  711. room for improving this program (user-friendly ??), but you can work with
  712. it if you want. The output can be redirected so 'FindEmAllvectors > prt:'
  713. will print the output on printer. With this program it is
  714. possible to determine almost all activities of a virus very quickly !!
  715. (I hope this program will turn out to be very useful for other anti-virus
  716. programmers, and hope they'll use it and send me suggestions !!)
  717.  
  718.    This program is comparable with the VMK program, it only does many things
  719. more. Send me your tips on how I could improve this program !
  720.  
  721. PS: The VMK program has some bugs (e.g. with 'special' resources like the
  722.     keymap.resource), use the FindEmAllvectors program !!!
  723.  
  724.    From version 1.2, there is also a ASCII display of the memory.
  725.    The program figures out which part of memory to display,by way of sorting
  726.    and selecting bad pointers. Now, the program can be made to display the
  727.    memory in ASCII when a certain number of BAD vectors are close to each-
  728.    other in memory. The default number for this is 3, so a program has
  729.    to change at least 3 vectors in order to be displayed in ascii.
  730.    The number used by the program can be given as parameters in CLI,
  731.    for example:
  732.    'FindEmAllvectors'     => No ASCII displays.
  733.    'FindEmAllvectors -d5' => Only ASCII displays above 5 changed vectors.
  734.    'FindEmAllvectors -d1' => Always ASCII displays of changed vectors.
  735.    'FindEmAllvectors -d'  => Default => Value = 3
  736.    This can be quite confusing, so try fiddling with it a bit, I hope
  737.    you understand it. Please note that the parameter-parser of the
  738.    program is very primitive, it won't give error messages or help !!
  739.  
  740.  
  741. THE PRINTNAME ROUTINE :
  742.  
  743.    - When printing names from libraries/devices/resources/residents/tasks,
  744. I get these names out of RAM, and some virus-makers try to do some special
  745. tricks to give some things BAD names. When you see a -?????? displayed that
  746. means that the name begins with a zero (so it is an empty name), so I placed
  747. question marks instead of nothing. Now, a SMART virus programmer (That's not
  748. possible since all these "programmers" are not smart enough to get out of 
  749. their ....) could give the name all blanks ("   "), but I've outsmarted them,
  750. I just place the "-" character before each name, so NO name can stay
  751. undetected !!!!. This was also done for when an Extremely clever virus
  752. maker would program a resident virus with the 'OK' name. (The OK-virus ???
  753. Hahahaha !!! Don't give them ideas, Koen !!!! ) Normally that would
  754. cause the Resident display to read "Resident:OK", but now it is :
  755. "Resident:-OK'. Gotcha !!!. I guess you still need a sharp eye, but it's
  756. better than the old printname routine I guess....
  757.  
  758. THE COLD RESET ROUTINE :
  759.    Like mentioned before, by pressing the left mouse button during the warning
  760. display, you can kill ALL resident programs/viruses in memory. This routine
  761. will be similar like putting the computer off and on, so NOTHING can survive
  762. this sort of reset.
  763.    I've tried a lot of 'reset versions' to see which one was the most 
  764. compatible one and would work on each system. First I used an adjusted
  765. version of the 'official' reset routine published by commodore. Well, this
  766. one didn't seem to work at all on an A3000 or on some autoboot harddisks.
  767.    From version V4.9, there is a new reset routine , that should work
  768. much better and more compatible. Special thanks must go to Geert Coelmont for
  769. sending an official reset routine !!. There is also a new reset version in
  770. boot now, that should solve the previous problems with autoconfig boards.
  771.  
  772. SHORT FINDEMALL HISTORY
  773.  
  774.  
  775. -V1.0 : checked only ColdCpt,CoolCpt,WarmCpt and KickTag
  776. -V1.1 : added KickMem and KickChckSum test(the last one shouldn't be checked)
  777.  
  778. -V2.0 : First 'advanced' version.
  779.         - First library checker routine for exec.library and trackdisk.device
  780.         - Checked residents => only one resident displayed
  781.         - checked ColdCpt,CoolCpt,WarmCpt,KickMem,KickTag,KckCheckSum
  782.           and hardints.
  783.         - memory allocated, 80 cols (didn't work on kick 2.0), 'official'
  784.           reset-routine.
  785. -V2.1 : Included intuition.library and graphics.library check, and a few
  786.         much used ExecInts.
  787. -V2.1+: Better display
  788. -V2.2 : added timer.device and layers.library check, checked ALL execints
  789.  
  790. -V3.0 : First version of FindEmAll that went trough list to check ALL
  791.         libraries/devices/resources. Included TrapVec and ErrVec check.
  792. -V3.1 : RAM/ROM L/D/R detection, TaskVecs checked, multiple (5) residents
  793.          displayed, KickTag field removed (because of the checked residents)
  794. -V3.2 : test version
  795. -V3.3 : First version with task-check, ExecInt checked better, SoftList
  796.         checked, max. 7 residents displayed
  797. -V3.4 : test version
  798. -V3.5 : DebugEntry check added, checks included for use with 'special' 
  799.         32-bit RAM outside 16 MB area.
  800. -V3.5+: added Port-display
  801. -V3.6 : Better and new task-check.
  802. -V3.7 : First check of interrupt servers
  803. -V3.8 : New Checklibrary routine (safer)
  804.  
  805. -V4.0 : Much better interrupt server check ('BAD' ones also checked)
  806.         automatic server<->handler detection included.
  807. -V4.1 : safer server check (no more GURU's with BAD lists)
  808. -V4.2 : much safer library checker, display reorganised
  809. -V4.3 : shorter and fast library check-routine
  810.         memory used is NOW allocated properly
  811.         PAL/NTSC check
  812. -V4.4 : KickTag check reinserted (You never know .....)
  813.         Code tidied up a bit.
  814.         library check routine more watertight against 'smart' guys.
  815.         FIRST OFFICIAL RELEASE.
  816. -V4.5 : ONLY CLI/workbench programs improved, since the added things can
  817.     only be checked in CLI/workbench. Added DOSBase check,internal
  818.          dos.library check and KicKMemList(s) display. Fixed the Task-
  819.        check bug.
  820. -V4.6 : -Exec library test made safer (99% watertight).
  821.     The new bootblock does this test.
  822.     -CLI checkers even more safer (99.9% Watertight !!)
  823.     -FastFonts and Blitzfonts programs support added in vectors program,
  824.         and also LoadWB (AmigaWiz !) and explode library recognized.
  825.     -KickMemlist display 'bug' in FindEmAllvectors fixed.
  826.     -'smart' ASCII display of memory in vectors program.
  827.     -SoftList and Ports checks removed from bootblock (rather useless ?).
  828.     -rt_init field (jumpaddress of a resident-routine or data's) and
  829.      rt_Endskip field (end of structure) from residents displayed 
  830.      by vectors program.
  831. -V4.7 : -Hmmm, I (at last !) found that the ExecPatch isn't done yet during
  832.      boot, so I could remove this routine, and so I had space to 
  833.      re-include the SftList check. Because of this new library test
  834.      the bootblock has become just as watertight as the CLI version!!!!
  835.         -Security improved drastic by not using the NT_TYPE (node !) values.
  836.     -Exec.library test made mega-safe !!! (99.999% Waterproof !)
  837.     -Dos.library check also made extra safe.
  838.     -Much Safer RAM/ROM detection
  839.     -Running Task is now also displayed.
  840.     -Drive Motor is stopped during boot-display.
  841.     -Replaced OldOpenLibrary into OpenLibrary in CLI programs
  842.     -Placed Servers on another place in screen in CLI, because there
  843.          are more libraries and tasks in CLI !!!    
  844. -V4.7+: -Bootblock/Programs now also have Safer RAM/ROM detection
  845.     -Ports check deleted (again ???) from bootblock.
  846. -V4.8 : -Brand new and very good ROM/RAM L/D/R detection routine,
  847.          very safe. Because of this new and long routine, the softlist
  848.          check was deleted again in the bootblock (forever ???)
  849.     -Vectors program now also checks librarychecksums and
  850.      the Resident's matchword.
  851.     -No more fiddling possible with libraries' negative sizes.
  852.     -Libraries closed after use in CLI (no place for it in BOOT !)
  853. -V4.9 : -LMB "bug" fixed in CLI program
  854.     -Table added with the negative sizes of some very important
  855.      ROM libraries/devices/resources, making CLI-checks mega-safe.
  856.     -New COLD-reset routine in CLI programs.                
  857. -V5.0 : -I was out of 4.x versions, so what's new ????
  858.     -Many code changes to make the bootblock code even shorter and
  859.      more compatible + waterproof.
  860.     -Negative size of exec.library checked in boot also.
  861.     -Negative size of libraries not CHANGED anymore, just checked,
  862.      so no more BAD library checksums caused by the FindEmAll program.
  863.      (Many viruses, however, WILL corrupt library checksums !!!)
  864.     -New, very SHORT and compatible COLD-reset routine in boot.
  865.     -checks against odd addresses added (less GURU's with bad lists).
  866.     -no more self-modifying code in programs, so there cannot be
  867.      problems with 680X0 caches (although the previous versions modified
  868.      their code in a quite compatible way, no GURU's there !!!!)
  869.     -KeyboardReset is checked (Important ????) ONLY in CLI,since the
  870.      check routine takes too much space (almost 100 Bytes !!)
  871.     -Many ß-testing was done of this version on Kickstart 1.2,1.3,2.0
  872.      ,on Amiga 500,2000+HD+68030,Amiga 3000 in order to 'earn' the
  873.      5.0 version.
  874. -V5.1 : -The name of the programs were changed from 'Memcheck' to 'FindEmALL'
  875.      ,that should sound more logical (thanks to Erik for this tip).
  876.     -The CLI program is made much more user-friendly, and I added an
  877.      analyze display for activities done a lot by viruses.
  878.     -There is also a WARNING text in boot also, but unfortunately I had
  879.      to remove the more unimportant fields from the boot (but normally
  880.      these vectors won't be used by viruses). 
  881. -V5.2 : -Just some small stuff changed,    please send me more suggestions next
  882.          time, so I can make better improvements !!
  883.     -The CLI version didn't seem to always "switch" properly from one
  884.          "big" alert window to the other on my kick 1.2, the present versions
  885.       tries to solve this by using a Delay between the displays.
  886.     -No more key press check in CLI, only LMB check !!
  887.     -The bootblock installer now saves 4 versions of the bootblock, so
  888.      "experts" can save the 'no-warning-prompt versions' also.
  889.         -The installer should run okay now when started from WORKBENCH,
  890.          I forgot to ReplyMsg the Workbench message, causing memory loss
  891.          and sometimes a GURU. The CLI FEA program now also does this,
  892.          YES you CAN run it ALSO from WORKBENCH, did you know this ??
  893.     -I don't use the Kick2.0 ColdResetRoutine anymore, it didn't seem
  894.      to be safe in all days use.....
  895.              
  896. CLI CHECKING VERSUS BOOTBLOCK CHECKING / CLI FINDEMALL INSTALLATION
  897.  
  898.    There are a few differences between virus-memory-checking in CLI/Workbench
  899. and checking during the boot :
  900.       - Viruses (LINK) that don't stay in memory during a reset (XENO !),
  901. WON'T use 'Class A' Vectors to stay in memory. These viruses are quite
  902. difficult to find in memory since they usually stay resident by way of
  903. libraries. Viruses of this type won't be found in memory during boot
  904. since they ARE NOT in memory at that time. These viruses are very rare
  905. at the moment. The solution to this is to use a checker that starts from CLI
  906. and that can deal with that virus. The CLI version of my FindEmAll program 
  907. or the FindEmAllvectors program could be used for this.
  908.       - Some viruses use special techniques to hide from memory DURING the
  909. boot. AFTER the boot they re-install the Class A vectors in order to survive
  910. the following reset. So, when a virus succeeds to bypass detection from my
  911. boot (What is unlikely, but never impossible), I advice you to put the CLI
  912. version somewhere at the 1-3'th place in the s/startup-sequence. I do it this
  913. way: I place the CLI FindEmAll command in the first AND the third place, just
  914. to be on the safe side. REMEMBER, a reset proof virus can NOT be hided from
  915. detection after startup (=> in CLI), this is their main weakness !!!!!
  916.       - Some viruses "skip" the real bootblock, so my Bootblock detector
  917. would not be run => no warning (Waft Virus!), so beware of this. Try the
  918. CLI program if you see wierd things like no black screen with a FEA installed
  919. disk !!!.
  920.       - Some Viruses, like bombs (Taipan...) are NOT resident in memory and
  921. can therefore NOT be detected by this program (rather obvious...)
  922.  
  923. By the way, if you run SetPatch before the FindEmAll CLI program is run, you
  924. can see that there are a LOT bad libraries. This is a inconvinience that
  925. hasn't been dealt with until now. So run the CLI program BEFORE the
  926. setpatch command. Also when you start up the WorkBench, you could notice
  927. that there is one vector changed in the intuition.library (-$0114). Don't
  928. worry about this. If you have doubts about some changed vectors, run the
  929. vectors program since it knows a few programs that change libraries,
  930. like FastFonts,.... More programs will probably be added !!
  931.  
  932.      - The bootblock is intended to find a virus in boot,even if it uses
  933. hiding techniques.
  934.  
  935.  
  936. FUTURE UPDATE PLANS + HELP NEEDED
  937.  
  938.       - If possible, even more checked !!
  939.       - An installer that automatically finds the kickstart start address.
  940.         (This could cause problems with ROM-modules at $f..... )
  941.       - Bigger and more flexible CLI FindEmAllvectors version
  942.         Setpatch,... recognition, if possible
  943.         (the recognition routine should be quite short but still VERY safe)
  944.       - The program "FindEmAllvectors" can be improved a lot.
  945.     Ability to break the program by 'Ctrl-C', but I don't know
  946.         how to do it .... Any hints ?? (In assembler !!!)
  947.       - Maybe a reset-proof checker if time allowes it.
  948.       - More library checks. Does anyone have a good description of the
  949.         COMPLETE (POSITIVE part) dos.library, xx.library ,xx.device,
  950.         xx.resource structures,... eventually also on kickstart 2.0 ???
  951.         Send it to me,please !!!
  952.       - ANY SUGGESTIONS ???? -> Write me !!!
  953.  
  954. THE AUTHOR - ME !
  955.  
  956.   Hmm.... I am a 20 year old Amiga freak, graduated as a programmer-
  957. analist since last year. I'm working as a systems manager/programmer
  958. since the 6th of January 1992 (It's a great job !!).
  959.  
  960.   I use an Amiga 500 with a KCS Power PC Board (Shame on me ??? - well,
  961. the reset-proof ramdisk is quite good .... The Emulator isn't used !!),
  962. together with a STAR LC24-200 (Help !! My printer's 1.2 ROM has a few bugs
  963. when printing graphics, he sometimes skips lines when he had to PRINT...
  964. anyone has a similar problem ????) and one 5 1/4 disk drive. For the moment
  965. it's quite poor but when I earn enough money I'll maybe get a 
  966. super-charged A2000 !, or a Tower-3000 maybe....I'll just wait and see.
  967.  
  968. THANKS
  969.  
  970.   I wish to thank the following people for their help and moral support:
  971.  
  972. - Geert "Cóóóóóól-G" Coelmont for his high-tech remarks and enthousiasm.
  973.   Write more of those great demos and mega-blasts, Geert !!!
  974. - Grégoire Jean Christophe for everything ... (yeah !!)
  975. - The Emro store in "Hasselt" for free use of their A3000, with that nasty
  976.   32-bit memory ,that mega-68030 processor and kickstart 2(.01 ??)
  977. - Walter Schoenaers for his technical electronic bullshit and his
  978.   1001 questions and comments.
  979. - Elen Joachim for giving me some competition with his Medicine Viruskiller
  980.   and for always ripping off my ideas or routines !
  981. - Ronny Joris for his moral support, crazy mind and para-psychologic
  982.   headaches (and also his wonderful ice-creams ...) !!
  983. - Ronny Plevoets for his "expert" opinion on "rasters",copper-"lines" and
  984.   11 ms harddisks.  
  985. - Beatiful girls with curly hair that keep me dreaming and hoping !..
  986.   (although they don't need to have curly hair !!!) (I would like to
  987.   have some mail from computer crazy girls !! - 200 % reply !!!).
  988.   (18-05-92: No responses until now ..... Come on girls !!!!)  
  989.  
  990. QUESTIONS....
  991.    
  992.    Like stated earlier, questions can be send directly to me and I'll try to
  993. find an answer for them. If there are some things confusing in the manual,
  994. let me know as the manual for this program is quite new. I'll change
  995. the doc file, if possible. Urgent questions can be answered directly, by mail.
  996. If you have Virus problems, send also the virus, if you can. If it is a new
  997. virus, I'll send it also further to Erik Løvendahl. Discretion is assured 
  998. about your name and address, unless you WANT it published !!
  999.  
  1000. BUGS
  1001.     There could be some bugs left !!
  1002.     If you find bugs, contact me !!!
  1003.  
  1004. SOURCE CODE.
  1005.  
  1006.    Hmmm... Normally I don't give away source codes, but if you don't trust
  1007. me, it would be possible that I sended the source to one or two well-known
  1008. anti-virus programmers, so they could check it.
  1009. The latest source isn't normally send to persons that I don't know, but you
  1010. never know if you can convince me of your good meanings (probably not).
  1011. The source of the previous versions, however, CAN be obtained !!
  1012.    I'll have to say that the codes of the installer and the vectors program
  1013. are not written with a lot of care for loops,.... since there is enough place
  1014. for these programs, not every byte is important. The code of the
  1015. bootblock/CLI checkers is written quite better and therefore much shorter.
  1016.  
  1017.  
  1018. ------------------------ Good Virus hunting !! -----------------------------
  1019.  
  1020.  
  1021.                Signed,
  1022.                            Koen Peetermans alias 'The Exorcist'
  1023.